#pragma once

#include <sys_def.h>

typedef enum {
	USBFS_MODE_DEV = 0,
	USBFS_MODE_HOST = 1,
} usbfs_mode_e;

typedef struct {
	usbfs_mode_e cur_mode : 1;
	u32_s mode_fault : 1;
	u32_s otg : 1;
	u32_s sof : 1;
	u32_s recv_fifo_non_empty : 1;
	u32_s non_periodic_trans_avl : 1;
	u32_s global_non_periodic_in_nak : 1;
	u32_s global_out_nak : 1;
	u32_s : 2;
	u32_s early_suspend : 1;
	u32_s suspend : 1;
	u32_s reset : 1;
	u32_s enum_finish : 1;
	u32_s iso_out_drop : 1;
	u32_s periodic_frame_end : 1;
	u32_s : 2;
	u32_s in_ep : 1;
	u32_s out_ep : 1;
	u32_s iso_in_not_complete : 1;
	u32_s iso_out_periodic_not_complete : 1;
	u32_s : 2;
	u32_s host_port : 1;
	u32_s host_channel : 1;
	u32_s periodic_trans_fifo_low : 1;
	u32_s : 1;
	u32_s id_pin_stat_change : 1;
	u32_s disconnect : 1;
	u32_s session : 1;
	u32_s wakeup : 1;
} usbfs_gint_expl_s;

_Static_assert(sizeof(usbfs_gint_expl_s) == 4,
	       "Struct usbfs_gint_expl_s defined error!");
